昨天完成用資料表來顯示工作事項清單,今天來用 Card 來實作另一種呈現清單的方式。
引用 MatCardModule 後,就可以利用 <mat-card> 標籤來實作卡片的元件,它是整個 Card 元件最外層元素,透過 appearance 屬性的設定,我們可以讓卡片以框線 (outlined) 或凸起 (raised) 的方式來呈現。

以目前工作事項的需求會使用到 Card 元件裡的標題、內容、卡片尾與動作列等不同的區域。
<mat-card appearance="outlined">
<mat-card-header>
<mat-card-title></mat-card-title>
<mat-card-subtitle></mat-card-subtitle>
</mat-card-header>
<mat-card-content></mat-card-content>
<mat-card-footer></mat-card-footer>
<mat-card-actions align="end"></mat-card-actions>
</mat-card>
如上面程式所示,在 <mat-card-header> 標題列還可以加入主標題的 <mat-card-title> 標籤與次標題的 <mat-card-subtitle> 標籤。而在 <mat-card-actions> 則可以指定 align 來決定按鈕是靠左 (start) 或是靠右 (end)。
然而,這些標籤都是純粹用來分別出卡片中不同的區域,沒有其他特別的行為,也可以使用其他元素標籤來取代。不過,若有撰寫單元測試的習慣,建議使用 Material 提供的標籤會讓測試相對好寫與易讀,這部分後面文章會有詳細的描述。
Angular Material 也針對圖片在卡片中不同的顯示方式提供對應的指令元件。例如,在標題列中可以利用 mat-card-avatar 指令元件加入圖示顯示。
<mat-card-header>
<div mat-card-avatar class="header-image"></div>
<mat-card-title>{{ task().subject }}</mat-card-title>
<mat-card-subtitle>{{ task().projectName }}</mat-card-subtitle>
</mat-card-header>

也可以使用 <mat-card-title-group> 標籤,來搭配著 mat-card-sm-image、mat-card-md-image 或 mat-card-lg-image 指令元件來在標題列顯示不同尺寸的圖片。
<mat-card-header>
<mat-card-title-group>
<mat-card-title>{{ task().subject }}</mat-card-title>
<mat-card-subtitle>{{ task().projectName }}</mat-card-subtitle>
<div mat-card-sm-image class="header-image"></div>
</mat-card-title-group>
</mat-card-header>
今天實作了工作事項的卡片清單,在範例中也使用前幾天實作的資料來源來拆分介面與資料處理。接下來,會針對資料表加入收合的功能。